package com.dianping.cat.message.spi;

public interface MessageQueue {
	public boolean offer(MessageTree tree);

	/**
	 * 队列中插入消息，如果队列已满，
	 *     add 是抛出异常；
	 *     put 是等待，直到可以插入
	 *     offer 是反馈false
	 * @param tree
	 * @param sampleRatio
	 * @return
	 */
	public boolean offer(MessageTree tree, double sampleRatio);

	/**
	 * 查看队列头的第一个元素，当队列为空时
	 *    peek 反馈null
	 *    element 抛出异常
	 * @return
	 */
	public MessageTree peek();

	/**
     * 从队列中删除第一个元素，当队列为空时
     *    poll 反馈null
     *    remove 抛出异常
     * @return
     */
	public MessageTree poll();

	// the current size of the queue
	public int size();
}
